Skip to content

revamp dotEnv parser#3347

Merged
Jarred-Sumner merged 1 commit intooven-sh:mainfrom
alexlamsl:dot-env
Jun 23, 2023
Merged

revamp dotEnv parser#3347
Jarred-Sumner merged 1 commit intooven-sh:mainfrom
alexlamsl:dot-env

Conversation

@alexlamsl
Copy link
Copy Markdown
Contributor

@alexlamsl alexlamsl commented Jun 17, 2023

  • fixes strings.indexOfAny()
  • fixes OOB array access

fixes #411
fixes #2823
fixes #3042
fixes #3380

Comment thread src/env_loader.zig Outdated
Comment thread src/env_loader.zig Outdated
@Jarred-Sumner
Copy link
Copy Markdown
Collaborator

Jarred-Sumner commented Jun 17, 2023

Nice. This mostly looks good. Can we look at a perf comparison? Maybe just paste a file with the same text copy pasted a thousand times and then paste timings of .env before & after

Performance matters for this because it’s used everywhere in Bun. So it can’t become a bottleneck. It impacts buns install, bun run, the runtime, basically everything

@alexlamsl alexlamsl force-pushed the dot-env branch 9 times, most recently from 9f05174 to 5c014f0 Compare June 20, 2023 00:37
Comment thread src/bun.js/api/bun.zig Outdated
Comment thread src/string_immutable.zig Outdated
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there's technically a pointer artihmetic thing we can do here

but pointer arithmetic is an easy way to segfault

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They do that in indexOfNewlineOrNonASCIIOrANSI() etc. − however they also do slice.len - remaining.len a few lines above (first cannot be a pointer after all), so I opt for consistency/readability here.

Comment thread test/cli/run/env.test.ts Outdated
@alexlamsl alexlamsl force-pushed the dot-env branch 2 times, most recently from 468eef0 to bdccd7e Compare June 21, 2023 21:43
- fixes `strings.indexOfAny()`
- fixes OOB array access

fixes oven-sh#411
fixes oven-sh#2823
fixes oven-sh#3042
@Jarred-Sumner
Copy link
Copy Markdown
Collaborator

Thank you for this

@Jarred-Sumner Jarred-Sumner merged commit ca1fe3c into oven-sh:main Jun 23, 2023
@alexlamsl alexlamsl deleted the dot-env branch June 23, 2023 00:07
Jarred-Sumner pushed a commit that referenced this pull request Jun 24, 2023
- fixes `strings.indexOfAny()`
- fixes OOB array access

fixes #411
fixes #2823
fixes #3042
Jarred-Sumner added a commit that referenced this pull request Jun 24, 2023
* wip changes for CommonJS

* this rewrite is almost complete

* even more code

* wip

* Remove usages of `import.meta.require` from builtins

* Remove usages of require

* Regenerate

* ✂️ builtin rewrite commonjs in printer

* Use lazy custom getters for import.meta

* fixups

* Remove depd

* ugh

* still crashing

* fixup undici

* comment out import.meta.require.resolve temporarily

not a real solution but it stops the crashes

* Redo import.meta.primordials

* Builtins now have a `builtin://` protocol in source origin

* Seems to work?

* Finsih getting rid of primordials

* switcharoo

* No more function

* just one more bug

* Update launch.json

* Implement `require.main`

* ✂️

* Bump WebKit

* Fixup import cycles

* Fixup improt cycles

* export more things

* Implement `createCommonJSModule` builtin

* More exports

* regenerate

* i broke some stuff

* some of these tests work now

* We lost the encoding

* Sort of fix zlib

* Sort of fix util

* Update events.js

* bump

* bump

* bump

* Fix missing export in fs

* fix some bugs with builtin esm modules (stream, worker_threads, events). its not perfect yet.

* fix some other internal module bugs

* oops

* fix some extra require default stuff

* uncomment this file but it crsahes on my machine

* tidy code here

* fixup tls exports

* make simdutf happier

* Add hasPrefix binding

* Add test for `require.main`

* Fix CommonJS evaluation order race condition

* Make node:http load faster

* Add missing exports to tls.js

* Use the getter

* Regenerate builtins

* Fix assertion failure in Bun.write()

* revamp dotEnv parser (#3347)

- fixes `strings.indexOfAny()`
- fixes OOB array access

fixes #411
fixes #2823
fixes #3042

* fix tests for `expect()` (#3384)

- extend test job time-out for `darwin-aarch64`

* `expect().resolves` and `expect().rejects` (#3318)

* Move expect and snapshots to their own files

* expect().resolves and expect().rejects

* Fix promise being added to unhandled rejection list

* Handle timeouts in expect(<promise>)

* wip merge

* Fix merge issue

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>

* fixup min/memcopy (#3388)

* Fix crash in builtins

* Don't attempt to evaluate modules with no source code

* Update WebCoreJSBuiltins.cpp

* Update WebCoreJSBuiltins.cpp

* Update WebCoreJSBuiltins.cpp

* Fix crash

* cleanup

* Fix test

cc @paperdave

* Fixup Undici

* Fix issue in node:http

* Create util-deprecate.mjs

* Fix several bugs

* Use the identifier

* Support error.code in `util.deprecate`

* make the CJs loader slightly more resilient

* Update WebCoreJSBuiltins.cpp

* Fix macros

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: dave caruso <me@paperdave.net>
Co-authored-by: Alex Lam S.L <alexlamsl@gmail.com>
Co-authored-by: Ashcon Partovi <ashcon@partovi.net>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants